﻿using System;
using System.ComponentModel;
using System.Configuration;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;
using TFile.CES.Entidades;
using TFile.CLN;
using TFile.CUB;
using System.Data;

namespace TFile.CIA
{
    /// <summary>
    /// Interaction logic for Documentos.xaml
    /// </summary>
    public partial class Documentos : UserControl
    {
        //Usuario _usuario;
        //Coleta _coleta;
        Documento _documento;
        String _arquivo;
        String _extensao;
        String _caminho;
        DocumentoServico _docserv;

        //public Documentos(Usuario usuario)
        public Documentos()
        {
            InitializeComponent();
            //_usuario = usuario;
            _docserv = new DocumentoServico();
            this.grdDocumentosBind();
        }

        private void txtArquivo_GotFocus(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Multiselect = false;
            dlg.Filter = "AllFiles|*.*";
            Nullable<bool> result = dlg.ShowDialog();

            if ((bool)result)
            {
                new FileInfo(dlg.FileName);
                using (Stream s = dlg.OpenFile())
                {
                    TextReader reader = new StreamReader(s);
                    string st = reader.ReadToEnd();
                    this.txtArquivo.Text = dlg.FileName;
                    _Caminho = System.IO.Path.GetDirectoryName(dlg.FileName);
                    _Arquivo = dlg.SafeFileName;
                    _Extensao = System.IO.Path.GetExtension(dlg.FileName);
                    this.txtDescricao.Focus();
                }
            }
        }

        private void rbtAgendadas_Checked(object sender, RoutedEventArgs e)
        {
            //this.grdColetas.ItemsSource = new ColetaServico().RetornaAgendadas();
        }

        private void rbtCanceladas_Checked(object sender, RoutedEventArgs e)
        {
            //this.grdColetas.ItemsSource = new ColetaServico().RetornaCanceladas();
        }

        private void rbtFaturadas_Checked(object sender, RoutedEventArgs e)
        {
            //this.grdColetas.ItemsSource = new ColetaServico().RetornaFaturadas();
        }

        //public Coleta _Coleta
        //{
        //    get { return _coleta; }
        //    set
        //    {
        //        if (_coleta != value)
        //        {
        //            _coleta = value;
        //            NotifyPropertyChanged("SelectedItem");
        //        }
        //    }
        //}

        public Documento _Documento
        {
            get { return _documento; }
            set
            {
                if (_documento != value)
                {
                    _documento = value;
                    NotifyPropertyChanged("SelectedItem");
                }
            }
        }

        public String _Caminho
        {
            get { return _caminho; }
            set
            {
                if (_caminho != value)
                {
                    _caminho = value;
                    NotifyPropertyChanged("SelectedItem");
                }
            }
        }

        public String _Arquivo
        {
            get { return _arquivo; }
            set
            {
                if (_arquivo != value)
                {
                    _arquivo = value;
                    NotifyPropertyChanged("SelectedItem");
                }
            }
        }

        public String _Extensao
        {
            get { return _extensao; }
            set
            {
                if (_extensao != value)
                {
                    _extensao = value;
                    NotifyPropertyChanged("SelectedItem");
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

        private void grdColetas_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //_Coleta = (Coleta)((DataGrid)sender).SelectedItem;
            //_Documento = null;
            //this.lblMensagemCopia.Content = "";
            //if (_Coleta != null)
            //{
            //    this.grdDocumentos.ItemsSource = new DocumentoServico().RetornaPorColeta(_Coleta);
            //}
        }

        private void grdDocumentosBind()
        {
            DataTableCollection dtcol = new DocumentoServico().GetData(ConfigurationManager.AppSettings["NTCP2"]).Tables;
            this.grdDocumentos.ItemsSource = dtcol[0].DefaultView;
            this.grdDocumentos.DataContext = dtcol[0];
        }

        private void grdDocumentos_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //_Documento = (Documento)((DataGrid)sender).SelectedItem;
            this.lblMensagemCopia.Content = "";
        }

        private void btnEnviarDocumento_Click(object sender, RoutedEventArgs e)
        {

            _docserv.Copia(ConfigurationManager.AppSettings["NTCP1"], ConfigurationManager.AppSettings["NTCP2"], _Caminho, _Arquivo, _Extensao, this.txtDescricao.Text);
            this.lblMensagemCopia.Content = Mensagens.TrataMensagens(_docserv.Mensagens);
            this.lblMensagemCopia.Content = "";
            this.txtArquivo.Text = "";
            this.txtDescricao.Text = "";
            //this.grdDocumentos.ItemsSource = new DocumentoServico().RetornaPorColeta(_Coleta);
        }

        private void btnExcluirDocumento_Click(object sender, RoutedEventArgs e)
        {
            if (_Documento != null)
            {
                _docserv.ExcluiDocumento(ConfigurationManager.AppSettings["NTCP1"], ConfigurationManager.AppSettings["NTCP2"],_Documento.Id.ToString(), _Documento.Arquivo);
                this.lblMensagemCopia.Content = Mensagens.TrataMensagens(_docserv.Mensagens);
                //this.grdDocumentos.ItemsSource = new DocumentoServico().RetornaPorColeta(_Coleta);
            }
        }

        private void btnVerDocumento_Click(object sender, RoutedEventArgs e)
        {
            if (_Documento != null)
            {
                _docserv.ExecutarArquivo(ConfigurationManager.AppSettings["NTCP1"], _Documento.Arquivo);
            }
        }
    }
}
